package 每日一题;

import java.util.HashMap;
import java.util.Map;

/**
 * @author 会玩的洋洋
 * @since 2022/1/18
 * https://leetcode-cn.com/problems/contains-duplicate-ii/
 */
public class _219_存在重复元素II {
    /**
     * 哈希表  通过一次遍历即可  将nums的值存入key  下标i 存入value
     * 通过比较是否存在相同的key 即num  则再比较 i - j 是否小于等于 k 即可
     * @param nums 目标数组
     * @param k 目标差绝对值小于等于的值
     * @return boolean
     */
    public boolean containsNearbyDuplicate(int[] nums, int k) {
        Map<Integer, Integer> hash = new HashMap<>();
        int n = nums.length;
        for (int i = 0; i < n; i++) {
            int num = nums[i];
            if (hash.containsKey(num) && i - hash.get(num) <= k) {
                return true;
            }
            hash.put(num, i);
        }
        return false;
    }
}
